function getRedisSessionId(sid) {
  return `${sid}`
}

class RedisSessionStore {
  constructor(client) {
    this.client = client
  }
  
  //获取Redis中存储的session数据
  async get(sid) {
    //console.log('get session', sid)
    const id = getRedisSessionId(sid)
    const data = await this.client.get(id)
    if (!data) {
      return null
    }
    try {
      const result = JSON.parse(data)
      return result
    } catch (err) {
      console.error(err)
    }
  }
  
  // 存储session数据到redis
  async set(sid, sess) {
    //console.log('set session', sid)
    const id = getRedisSessionId(sid)
    try {
      const sessStr = JSON.stringify(sess)
      await this.client.set(id, sessStr)
      
    } catch (err) {
      console.error(err)
    }
  }
  
  // 从reids当中删除某个session
  async destroy(sid) {
    const id = getRedisSessionId(sid)
    await this.client.destroy(id)
  }
}

module.exports = RedisSessionStore
